如何管理自己的 Code 或是 使用別人的開源程式。
Reference: https://w3c.hexschool.com/git/3f9497cd
進入你的專案目錄並初始化Git倉庫:
cd <目錄>
或是在該資料夾點右鍵 > git bash
這會在你的專案目錄中創建一個隱藏的.git
目錄,用於存儲版本控制信息。
$ git init
在專案的根目錄中創建一個名為新增一個檔案
檔案名稱: .gitignore
.gitignore
文件是一個配置文件,用於告訴Git哪些文件或目錄應該被忽略,不需要被版本控制。這樣可以確保這些文件不會被加入到Git倉庫中,從而保持倉庫的整潔和專注於真正需要被追蹤的內容。
為什麼需要 .gitignore
文件?
常見的 .gitignore
規則
*
:匹配任意數量的字符?
:匹配任意一個字符[abc]
:匹配括號內的任意一個字符!
:否定模式,表示不忽略匹配的文件以下要寫在.gitignore的文件裡面
# 忽略所有 .log 文件
*.log
# 忽略 node_modules 目錄
node_modules/
# 忽略所有臨時文件
*.tmp
添加文件到暫存區,這個步驟不會真的上傳到github上,而是暫時放在本地。
$ git status #確認狀態
$ git add . #加入全部更新的檔案 git add <文件名>
提交暫存區中的文件並添加提交信息:
$ git commit -m "status" #提交暫存區中的文件並添加提交信息
查看狀態:查看當前工作目錄和暫存區的狀態:
$ git status #確認狀態
原本能輸入帳號密碼就能 push,現在都要改用 Personal access tokens 才能夠 push code上去GitHub
所以要先取得Token https://github.com/settings/tokens
這邊都是先全勾,以後如果真的要開發項目的話再自己去研究即可。
將Token記錄下來,下個指令會需要輸入。
將本地倉庫的更改推送到遠端GitHub倉庫:git push
:這個命令用於將本地倉庫的更改推送到遠端倉庫。origin
:這是遠端倉庫的默認名稱。當你克隆一個倉庫時,Git會自動將遠端倉庫命名為origin
。main
:這是你要推送的本地分支的名稱。在這個例子中,我們推送的是main分支
。
$ git push -u origin main # 上傳
並輸入 Token 就會自動 push 上去。
這時就可以去Github介面看看有沒有成功?
假設你已經在本地倉庫中進行了一些更改,並且希望將這些更改推送到遠端倉庫。以下是具體步驟:
檢查當前分支: 確保你在main分支
上:
$ git branch
如果你不在main
分支上,可以切換到main分支:
$ git checkout main
添加更改到暫存區: 將所有更改添加到暫存區:
$ git add .
提交更改: 提交更改並添加提交信息:
$ git commit -m "你的提交信息"
推送到遠端倉庫: 使用git push -u origin main將更改推送到遠端倉庫:
$ git push -u origin main
為什麼要有branch?
在Git中使用分支(branch)有很多好處,特別是在多人協作和開發新功能時。
將 GitHub (Remote) 上面的 code 抓下來
$ git clone http://..git #複製檔案
或是你已經創好 Repositories
建立 新branch,不是直接 push main
$ git branch <分支名>
$ git checkout <分支名>
或者使用以下命令同時創建並切換到新分支:
$ git checkout -b <分支名>
更改code完成後,要確認更改後的代碼與保存的main
分支之間的差異,你可以使用git diff
命令。
以下是具體步驟:
$ git diff main
main
分支與當前分支之間的已提交更改。$ git diff main..HEAD
接著再依照 2.5 更新 code 的方式 PUSH 回github上
更新後可以在網頁上看到你的branch CA
如果你不再需要某個分支,可以刪除它:
$ git branch -d <分支名稱>
當你在分支上完成工作後,可以將分支合併回主分支:
$ git checkout main
$ git merge <分支名稱>
例如:將feature-branch合併回main分支:
$ git checkout main
$ git merge feature-branch
使用別人的 Code,想要幫忙維護的話要進行pull request,要求更新。
先fork,然後下載專案網址
$ git clone http://..git #複製檔案
$ git remote #確認專案
$ git remote -v #確認專案詳細網址
# 更新對方的程式碼
$ git remote add upstream http://原本fork的專案.git #程式碼的來源是upstream
$ git remote -v
$ git fetch upstream #確認upstream的內容
$ git pull upstream master(檔案名稱) #下載upstream的內容
$ code . #open code
$ git push #就會push到fork版本的master(檔案名稱)中
回到專案 github就有提示
在 Day 16:如何重現開源AI模型訓練的文章中,會帶著實作/Debug
跑看看 T2I-Adapter 專案,可以先用 git clone 把專案載下來
推薦環境:
• git:
https://en.wikipedia.org/wiki/Distributed_version_control
https://hackernoon.com/understanding-git-fcffd87c15a3
https://tw.alphacamp.co/blog/git-github-version-control-guide (Mandarin)
• Github:
https://w3c.hexschool.com/git/3f9497cd
https://readwrite.com/2013/09/30/understanding-github-a-journey-for-beginners-part-1/ (Mandarin)